/*=========================================================================
UberSim Source Code Release
-------------------------------------------------------------------------
Copyright (C) 2002 Manuela Veloso, Brett Browning, Mike Bowling,
                   James Bruce; {mmv, brettb, mhb, jbruce}@cs.cmu.edu
                   Erick Tryzelaar {erickt}@andrew.cmu.edu
School of Computer Science, Carnegie Mellon University
-------------------------------------------------------------------------
This software is distributed under the GNU General Public License,
version 2.  If you do not have a copy of this licence, visit
www.gnu.org, or write: Free Software Foundation, 59 Temple Place,
Suite 330 Boston, MA 02111-1307 USA.  This program is distributed
in the hope that it will be useful, but WITHOUT ANY WARRANTY,
including MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-------------------------------------------------------------------------*/

#ifndef __SIM_GEOMETRY_H__
#define __SIM_GEOMETRY_H__

#include "nommgr.h"
#include <ode/ode.h>
#include "mmgr.h"

#include "Spatial.h"

class CollisionController;

class Geometry : public Spatial
{
	public:
		Geometry          (char* name = "Geometry");
		virtual ~Geometry ();

	public:
		CollisionController* getCollisionController ();
		
		dGeomID&        getGeometry ();
		BoundingSphere& getModelBound ();
	
		void setCollisionController (CollisionController* collisionController);
		
		void setGeometry   (const dGeomID&        geometry);
		void setModelBound (const BoundingSphere& boundingSphere);
		void setColor      (const Vector3&        color);

	public:
		virtual void updateWorldData  (Real deltaTime);
		virtual void updateWorldBound ();
		virtual void draw             ();
		virtual void collidingWith    (Spatial* object);

	protected:
		CollisionController* collisionController;
		
		BoundingSphere modelBound;
		
		dGeomID geometry;
		Vector3 color;
};

#endif
